//////////////////////////////////////////////
// DdsEncoder.h
//
//////////////////////////////////////////////

/// Defines / Macros -------------------------

#pragma once

/// Includes ---------------------------------

// nkImages
#include "../Data/AlignmentDescriptor.h"
#include "../Data/Image.h"
#include "../Data/ImageView.h"

#include "../Dll/DllDefines.h"

// nkMemory
#include <NilkinsMemory/Containers/Buffer.h>
#include <NilkinsMemory/Containers/BufferView.h>

/// Class ------------------------------------

namespace nkImages
{
	class DLL_IMAGES_EXPORT DdsEncoder final
	{
		public :

			// Encoding
			static nkMemory::Buffer encode (const ImageView& image) ;

			// Decoding
			static bool canDecode (nkMemory::BufferView<unsigned char> data) ;
			static Image decode (nkMemory::BufferView<unsigned char> data, const AlignmentDescriptor& alignmentDescriptor = AlignmentDescriptor()) ;
	} ;
}